//密码加密包
const bcryptjs=require("bcryptjs")
const db=require("../db/index")
//验证规则
const {isEmail,isPwd,stringCheck} =require("../utils/regtest")
//获取用户信息
exports.getUserinfo=(req,res)=>{
    const sql="select id, username, email, avatar, role from user where id = ?"
    db.query(sql,req.auth.id,(err,result)=>{
        if(err)return res.R(err)
        if(result.length!==1)return res.R("获取用户信息失败！！")
        return res.send({
            status:200,
            message:"获取用户信息成功！",
            data:result[0]
        })
    })
}
//更改用户信息
exports.updateUserinfo=(req,res)=>{
    const userinfo=req.fields
    if(!isEmail(userinfo.email))return res.R("邮箱格式错误！")
    if(!stringCheck(req.fields.username))return res.R("用户名必须是三位字母或汉字或下划线或数字的单一形式或不同组合！")
    const exist="select id from user where username=?"
    db.query(exist,[userinfo.username],(err,results)=>{
        if (err) return res.R(err)
        console.log(req.auth.id);
        // console.log(results[0].id);
        if (results.length!==0){
            if (results[0].id!==req.auth.id) return res.R("用户名已被占用！")
        }
        const sql="update user set ? where id= ?"
         db.query(sql,[userinfo,req.auth.id],(err,result)=>{
            if(err)return res.R(err)
            if(result.affectedRows!==1)return res.R("修改用户信息失败！")
            return res.R("修改用户信息成功！",200)
        })
    })
    

}
//更改用户密码处理函数
exports.updatePwd=(req,res)=>{
    const sql="select username,password from user where id=?"
    db.query(sql,req.auth.id,(err,results)=>{
        if(err)return res.R(err)
        if(results.length!==1)return res.R("用户不存在！")
        if(!isPwd(req.fields.newPwd))return res.R("密码以字母开头，长度在6-12之间，只能包含字符、数字和下划线。")
        if(!bcryptjs.compareSync(req.fields.oldPwd,results[0].password)) return res.R("旧密码不正确！")
        const newPwd=bcryptjs.hashSync(req.fields.newPwd,10)
        const updatepwd="update user set password = ? where id = ?"
        db.query(updatepwd,[newPwd,req.auth.id],(err,results)=>{
            if (err) return res.R(err)
            if(results.affectedRows!==1) return res.R("修改密码失败，请稍后再试！")
            return res.R("修改密码成功！",200)
        })
    })
}
//更改用户头像处理函数
exports.updateAvatar=(req,res)=>{
    const sqlupdate="update user set avatar = ? where id = ?"
    db.query(sqlupdate,[req.body.avatar,req.auth.id],(err,results)=>{
        if(err) return res.R(err)
        if(results.affectedRows!==1) {return res.R("更新头像失败！")}
        res.R("更新头像成功！",200)
    })
}